home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 2
/
DOS037.dsk
/
DISK SORT(3.3).bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
6KB
|
168 lines
0 SPEED= 255: HIMEM: 16384:MAX = 70:RWTS = 16384:BUFFER = RWTS +256
1 IF PEEK(RWTS) = 72 THEN 5
2 PRINT CHR$(4)"BLOAD RWTS,A16384,V"
3 POKE 16420,65
5 DIM FILE$(MAX),P%(MAX),T%(MAX),S%(MAX),L%(MAX),E%(MAX),SEQ(MAX)
6 RD = 1:WR = 2
10 POKE -16298,0: TEXT : CALL -936: GOTO 20
11 REM PRINT CENTER ROUTINE
12 CALL -958: HTAB 20 - LEN(C$)/2
13 PRINT C$: REM PRINTS LINE
14 PRINT CHR$(7)
15 RETURN
20 VTAB 5:C$ = "DISK SORT": GOSUB 11
30 C$ = "BY - TED COHN": GOSUB 11
40 C$ = "DATE: DECEMBER 1, 1979": GOSUB 11
50 VTAB 21: PRINT " PRESS 'ESC' TO END"
55 PRINT "< PRESS THE SPACE BAR TO CONTINUE...>";
60 GET C$
70 IF C$ = CHR$(27) THEN HOME : END
80 IF C$ < >" " THEN 60
90 HOME
100 VTAB 10: PRINT "INSTRUCTIONS (Y/N)? ";
110 GET C$: IF C$ = "Y" THEN 1000
120 IF C$ < >"N" THEN 110
130 HOME
140 PRINT "THERE ARE THREE TYPES OF DIRECTORY"
150 PRINT "<CTRL-J>SORTS AVAILABLE: "
160 PRINT : PRINT : PRINT "1 - SORT BY NAME"
170 PRINT : PRINT "2 - SORT BY TYPE"
180 PRINT : PRINT "3 - SORT BY SECTOR LENGTHS"
190 PRINT : PRINT : CALL -958
200 PRINT "ENTER NUMBER OF DESIRED SORT? ";
220 GET S$
230 IF S$ = "1" THEN 500
240 IF S$ = "2" THEN 600
250 IF S$ = "3" THEN 700
260 GOTO 220
500 GOSUB 800: GOSUB 2000: GOSUB 3000: GOTO 9000
600 GOSUB 800: GOSUB 2000: GOSUB 3000: GOSUB 4000: GOTO 9000
700 GOSUB 800: GOSUB 2000: GOSUB 3000: GOSUB 5000: GOTO 9000
800 HOME : VTAB 10
810 C$ = "PLEASE INSERT DISK INTO DRIVE 1": GOSUB 11
820 C$ = "<SPACE BAR TO CONTINUE>": GOSUB 11
830 IF PEEK( -16384) < >160 THEN 830
840 POKE -16368,0
850 HOME
860 VTAB 7: HTAB 15: FLASH : PRINT "DISK SORT"
870 NORMAL
880 RETURN
1000 HOME
1010 HTAB 12: PRINT "CATALOG SORT": PRINT : PRINT
1020 PRINT " THIS PROGRAM WILL REARRANGE THE "
1030 PRINT "FILE NAMES OF YOUR CATALOG INTO ALPHA-"
1040 PRINT "BETICAL ORDER. IN ADDITION, YOU HAVE THE"
1050 PRINT "OPTION OF GROUPING FILES BY THEIR TYPES."
1060 PRINT "ORDER IS INTEGER, APPLESOFT, BINARY AND "
1070 PRINT "TEXT FILES.<CTRL-J>"
1080 PRINT " THIS WILL MAKE YOUR CATALOG LOOK "
1090 PRINT "VERY NEAT AND CLEAN... IT WILL ALSO MAKE"
1100 PRINT "FINDING PROGRAM NAMES A SINCH!"
1110 PRINT : PRINT : PRINT "< PRESS SPACE BAR TO CONTINUE >";
1120 GET A$: IF A$ < >" " THEN 1120
1130 HOME : PRINT "(1) SORT BY NAME"
1140 PRINT : PRINT " ENTER '1' WHEN ASKED FOR SORT TYPE."
1150 PRINT " THIS WILL ONLY ALPHABETIZE THE FILE"
1160 PRINT " NAMES. WHEN COMPLETED, THE PROGRAM"
1170 PRINT " WILL CLEAR UP ALL DIRECTORY PROBLEMS"
1180 PRINT "(2) SORT BY TYPE": PRINT
1190 PRINT " THIS DOES THE SAME AS THE ABOVE, BUT";
1200 PRINT " ALSO PLACES THE FILES INTO GROUPINGS";
1210 PRINT " BY TYPE (I.E. I,A,B,T).": PRINT
1220 PRINT "(3) SORTING BY LENGTH": PRINT
1230 PRINT " THIS DOES THE SAME AS THE 1ST SORT,"
1240 PRINT " BUT ALSO PLACES THE FILE INTO"
1250 PRINT " SEQUENCIAL ORDER BY SECTOR LENGTH."
1260 PRINT : PRINT "< PRESS SPACE BAR TO CONTINUE >";
1270 GET A$: IF A$ < >" " THEN 1270
1280 GOTO 130
1999 END
2000 VTAB 10:C$ = "READING DIRECTORY": GOSUB 11
2010 RD = 1:WR = 2:N = -1
2020 FOR S = 15 TO 1 STEP -1
2030 POKE 0,17: POKE 1,S: POKE 2,RD
2040 CALL RWTS
2050 FOR I = BUFFER +14 TO BUFFER +255 STEP 35
2060 IF PEEK(I) = 0 THEN 2180
2070 IF PEEK(I -3) = 255 THEN 2160
2080 N = N +1
2090 P%(N) = PEEK(I -1)
2100 T%(N) = PEEK(I -3)
2110 S%(N) = PEEK(I -2)
2120 L%(N) = PEEK(I +30)
2130 E%(N) = PEEK(I +31)
2140 FILE$(N) = ""
2150 FOR J = 0 TO 29:FILE$(N) = FILE$(N) + CHR$( PEEK(I +J)): NEXT J
2160 NEXT I
2170 NEXT S
2180 FOR I = 0 TO N:SEQ(I) = I: NEXT
2190 RETURN
3000 VTAB 10:C$ = "SORTING DIRECTORY": GOSUB 11
3005 FLAG = 0
3010 FOR I = 0 TO N -1
3020 X = SEQ(I):Y = SEQ(I +1)
3030 IF FILE$(X) < = FILE$(Y) THEN 3060
3040 SEQ(I) = Y:SEQ(I +1) = X
3050 FLAG = 1
3060 NEXT I
3070 IF FLAG = 1 THEN 3005
3080 RETURN
4000 REM ----SORT BY TYPE----
4010 FLAG = 0
4020 FOR TYPE = 0 TO 4: IF TYPE = 3 THEN 4070
4030 FOR I = 0 TO N
4040 X = P%(I) -128: IF X <0 THEN X = X +128
4050 IF X = TYPE THEN SEQ(FLAG) = I:FLAG = FLAG +1
4060 NEXT I
4070 NEXT TYPE
4080 RETURN
5000 FLAG = 0
5010 FOR I = 0 TO N -1
5020 IF L%(SEQ(I)) < = L%(SEQ(I +1)) THEN 5060
5030 X = SEQ(I):SEQ(I) = SEQ(I +1):SEQ(I +1) = X
5040 FLAG = 1
5060 NEXT I
5070 IF FLAG = 1 THEN 5000
5080 RETURN
6000 FOR I = 0 TO N: PRINT L%(SEQ(I)): NEXT
6010 END
7000 FOR Z = BUFFER TO BUFFER +255: POKE Z,0: NEXT : RETURN
8000 RESUME
9000 REM ----WRITE TO DISK----
9010 C$ = "WRITING DIRECTORY": VTAB 10: GOSUB 11
9020 I = 0
9030 FOR S = 15 TO 1 STEP -1
9040 GOSUB 7000: REM CLEAR BUFFER
9050 POKE BUFFER +1,17: POKE BUFFER +2,S -1
9060 FOR J = BUFFER +11 TO BUFFER +255 STEP 35
9070 X = SEQ(I)
9080 POKE J,T%(X): POKE J +1,S%(X)
9090 POKE J +2,P%(X): POKE J +33,L%(X)
9100 POKE J +34,E%(X)
9110 FOR K = 1 TO 30: POKE J +K +2, ASC( MID$ (FILE$(X),K,1)): NEXT
9120 POKE 0,17: POKE 1,S: POKE 2,WR
9130 CALL RWTS
9140 I = I +1: IF I >N THEN 9200
9150 NEXT J
9160 NEXT S
9200 IF S = 0 THEN 9300
9210 GOSUB 7000
9220 POKE 0,17: POKE 1,S -1: POKE 2,WR
9225 IF S >1 THEN POKE BUFFER +1,17: POKE BUFFER +2,S -2
9230 CALL RWTS
9300 C$ = "SORT COMPLETED": VTAB 10: GOSUB 11
9310 PRINT : PRINT CHR$(4)"CATALOG"
9320 END
9999 REM *** DISK SORT ***
10000 REM DONATED TO THE APPLE CORE OF SAN FRANCISCO
10010 REM DECEMBER 1, 1979 BY TED COHN
10030 REM --------------------
10040 REM PROGRAM SEGMENTS
10050 REM 1000-1300 INSTRUCTIONS
10060 REM 2000-2999 READ CATALOG
10070 REM 3000-3999 ALPHA SORT
10080 REM 4000-4100 TYPE SORT
10090 REM 5000-5100 SECTOR SORT
10100 REM HOPE YOU HAVE FUN WITH
10110 REM THIS SORT ROUTINE!!!!
10120 REM -------------------- TED COHN, 1411 ARLINGTON, EL CERRITO, CA. 94530 (415) 529-2502